from typing import Dict, List
from MelodieFuncFlow import MelodieGenerator

font_sizes_text = """
63 大特号
54 特号
42 初号
36 小初
26 一号
24 小一号
22 二号
18 小二号
16 三号
15 小三号
14 四号
12 小四号
10.5 五号
9 小五号
7.5 六号
6.5 小六号
5.5 七号
5 八号
"""


def add_to_dict(dic: Dict[str, float], values: List[str]):
    font_size_pt, cn_font_size = values
    dic[cn_font_size] = float(font_size_pt)
    return dic


# 从中文字号到pt的映射
_font_size_mapping = (
    MelodieGenerator(font_sizes_text.splitlines())
    .map(lambda s: s.strip())
    .filter(lambda s: s.strip() != "")
    .map(lambda s: s.split(" "))
    .fold_left(add_to_dict, {})
)


def cn_font_size_to_pt(cn_font_size: str) -> float:
    return _font_size_mapping[cn_font_size]
